package optymalizacjaSkladowania;

import skladowisko.DostepDoPola;
import skladowisko.Pole;

/**
 *
 * @author Krzysiek
 */
public class StrategiaK1Standard implements StrategiaK1
{
    private double p_M = 1.0;
    private double p_transport = 3.0;

    public StrategiaK1Standard()
    {
    }

    public StrategiaK1Standard(double parametr_M, double parametr_transport)
    {
        this.p_M = parametr_M;
        this.p_transport = parametr_transport;
    }

    public double k1(Pole p)
    {
        double wynik = p_M*funkcjaM_x(p)+p_transport+funkcjaDostep(p).ileOperacjiDoWykonania();
        //System.out.println("M(x) = "+funkcjaM_x(p) + "  |  " + "dostep: " + funkcjaDostep(p).ileOperacjiDoWykonania());

        return wynik;
    }

    //***************************************************************************
    private double funkcjaM_x(Pole p)
    {
        return p.getZawartoscPola().getPierwszaWolna();
    }

    private DostepDoPola funkcjaDostep(Pole p)
    {
        return p.getSkladowisko().sprawdzDostep(p);
    }
    //***************************************************************************
}
